package com.atguigu.exam.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
public class BaseEntity implements Serializable {

    @Schema(description = "主键")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;


//    Date 类型默认序列化可能是时间戳（如 1696101600000）或非标准字符串
//    （如 Sun Oct 01 10:00:00 CST 2023），前端无法直接按 “yyyy-MM-dd HH:mm:ss”
//    解析，导致显示错乱。

    //    Java 中默认的时间处理（如 java.util.Date、java.time.LocalDateTime 等）
//    在序列化时，默认使用的是 UTC 时区（世界协调时间），
//    而中国使用的是 GMT+8 时区（比 UTC 快 8 小时）。
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(description = "创建时间")
    private Date createTime;


    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Schema(description = "修改时间")
    private Date updateTime;

    @JsonIgnore//@JsonIgnore 就是 JSON 转换时的 “过滤器”，控制哪些字段需要被排除
    @Schema(description = "逻辑删除")
    @TableField("is_deleted")
    @TableLogic
    private Byte isDeleted;

}